home *** CD-ROM | disk | FTP | other *** search
/ The Sunday Times: The Month 2004 August / The Sunday Times - The Month 2004-08.iso / pc / engine / modules / text_pages_backup.swf / scripts / frame_1 / DoAction.as
Encoding:
Text File  |  2004-06-24  |  13.0 KB  |  439 lines

  1. function loadImage(mc, node, extrapath)
  2. {
  3.    var _loc3_ = extrapath;
  4.    if(_loc3_ == null)
  5.    {
  6.       _loc3_ = "";
  7.    }
  8.    var strDefaultPath = Tardis.ASSETS_FOLDER + "images/" + Tardis.ActiveSection.id + "/";
  9.    var _loc1_ = node.firstChild.nodeValue;
  10.    var _loc2_ = node.attributes.path;
  11.    if(_loc2_ != null)
  12.    {
  13.       _loc1_ = _loc2_ + _loc1_;
  14.    }
  15.    else
  16.    {
  17.       _loc1_ = strDefaultPath + _loc3_ + _loc1_;
  18.    }
  19.    if(strPathPrefix == null)
  20.    {
  21.       strPathPrefix = "";
  22.    }
  23.    mc.loadMovie(strPathPrefix + _loc1_);
  24. }
  25. function init()
  26. {
  27.    parseContent(nodeData);
  28.    createPages();
  29.    fillContent();
  30.    onComplete();
  31.    _visible = true;
  32. }
  33. function loadSampleContent(strName)
  34. {
  35.    var _loc1_ = this;
  36.    _loc1_.xmlContent = new XML();
  37.    _loc1_.xmlContent.ignoreWhite = true;
  38.    _loc1_.xmlContent.onLoad = function(success)
  39.    {
  40.       if(success)
  41.       {
  42.          parseContent(this.firstChild);
  43.          createPages();
  44.          fillContent();
  45.       }
  46.    };
  47.    _loc1_.xmlContent.load("sample_xml/" + strName + ".xml");
  48. }
  49. function parseBoldTags(str)
  50. {
  51.    var _loc1_ = str;
  52.    var _loc2_ = _loc1_.indexOf("<b>");
  53.    if(_loc2_ != -1)
  54.    {
  55.       var _loc3_ = _loc1_.indexOf("</b>");
  56.       var word = _loc1_.substring(_loc2_ + 3,_loc3_);
  57.       var beginning = _loc1_.substring(0,_loc2_);
  58.       var end = _loc1_.substring(_loc3_ + 4);
  59.       return beginning + "<font face=\'FranklinGotURWTDem\'>" + word + "</font>" + parseBoldTags(end);
  60.    }
  61.    return _loc1_;
  62. }
  63. function createPages()
  64. {
  65.    var _loc1_ = 0;
  66.    while(_loc1_ < arrPages.length)
  67.    {
  68.       var _loc2_ = _loc1_ != 0 ? mPage_0.duplicateMovieClip("mPage_" + _loc1_,_loc1_) : mPage_0;
  69.       _loc2_._visible = false;
  70.       _loc1_ = _loc1_ + 1;
  71.    }
  72. }
  73. function fillContent()
  74. {
  75.    var strID = Tardis.ActiveSection.id;
  76.    SECTION_COLOR = Tardis.Colors.getHex(strID);
  77.    SECTION_COLOR50 = Tardis.Colors.getHex(strID + "50");
  78.    DEFAULT_COLOR = Tardis.Colors.getHex("default");
  79.    DEFAULT_COLOR50 = Tardis.Colors.getHex("default50");
  80.    strDEFAULT_COLOR50 = Tardis.Colors.getString("default50");
  81.    var _loc3_ = new Array();
  82.    var _loc1_ = 0;
  83.    while(_loc1_ < arrPages.length)
  84.    {
  85.       var _loc2_ = this["mPage_" + _loc1_];
  86.       _loc2_.gotoAndStop("layout_" + arrPages[_loc1_].type);
  87.       _loc2_.headline = arrPages[_loc1_].headline;
  88.       _loc2_.quote = arrPages[_loc1_].quote;
  89.       _loc2_.arrImages = arrPages[_loc1_].arrImages;
  90.       _loc2_.defaultVideoNumber = arrPages[_loc1_].defaultVideoNumber;
  91.       if(_loc2_.txtBody_0 != undefined)
  92.       {
  93.          _loc3_.push("mPage_" + _loc1_ + ".txtBody_0");
  94.       }
  95.       if(_loc2_.txtBody_1 != undefined)
  96.       {
  97.          _loc3_.push("mPage_" + _loc1_ + ".txtBody_1");
  98.       }
  99.       _loc1_ = _loc1_ + 1;
  100.    }
  101.    var boldedCopy = parseBoldTags(strCopy);
  102.    flowText(boldedCopy,_loc3_);
  103.    mPageNav.setColourUp(DEFAULT_COLOR50);
  104.    mPageNav.setColourDown(DEFAULT_COLOR);
  105.    mPageNav.setTotalPages(arrPages.length);
  106.    mPageNav.navigateTo(1);
  107.    _visible = true;
  108. }
  109. function parseContent(xmlContent)
  110. {
  111.    var arrNodes = xmlContent.childNodes;
  112.    this.arrPages = new Array();
  113.    this.arrVideos = new Array();
  114.    var i = 0;
  115.    while(i < arrNodes.length)
  116.    {
  117.       if(arrNodes[i].nodeName == "copy")
  118.       {
  119.          this.strCopy = arrNodes[i].firstChild.nodeValue;
  120.       }
  121.       else if(arrNodes[i].nodeName == "page")
  122.       {
  123.          var page = {type:arrNodes[i].attributes.type,arrImages:new Array()};
  124.          var _loc3_ = arrNodes[i].childNodes;
  125.          var _loc1_ = 0;
  126.          while(_loc1_ < _loc3_.length)
  127.          {
  128.             if(_loc3_[_loc1_].nodeName == "image")
  129.             {
  130.                var image = {};
  131.                for(var _loc2_ in _loc3_[_loc1_].childNodes)
  132.                {
  133.                   image[_loc3_[_loc1_].childNodes[_loc2_].nodeName] = _loc3_[_loc1_].childNodes[_loc2_].firstChild.nodeValue;
  134.                }
  135.                if(_loc3_[_loc1_].byName("image").attributes.fullscreen == "true")
  136.                {
  137.                   image.hasFullscreen = true;
  138.                }
  139.                else
  140.                {
  141.                   image.hasFullscreen = false;
  142.                }
  143.                if(image.image != "" && image.image != null)
  144.                {
  145.                   page.arrImages.push(image);
  146.                }
  147.             }
  148.             else if(_loc3_[_loc1_].nodeName == "video")
  149.             {
  150.                page.defaultVideoNumber = _loc3_[_loc1_].firstChild.nodeValue;
  151.             }
  152.             else
  153.             {
  154.                page[_loc3_[_loc1_].nodeName] = _loc3_[_loc1_].firstChild.nodeValue;
  155.             }
  156.             _loc1_ = _loc1_ + 1;
  157.          }
  158.          arrPages.push(page);
  159.       }
  160.       else if(arrNodes[i].nodeName == "videos")
  161.       {
  162.          _loc3_ = arrNodes[i].childNodes;
  163.          _loc1_ = 0;
  164.          while(_loc1_ < _loc3_.length)
  165.          {
  166.             var vid = new Object();
  167.             vid.nodeData = _loc3_[_loc1_];
  168.             _loc2_ = 0;
  169.             while(_loc2_ < _loc3_[_loc1_].childNodes.length)
  170.             {
  171.                vid[_loc3_[_loc1_].childNodes[_loc2_].nodeName] = _loc3_[_loc1_].childNodes[_loc2_].firstChild.nodeValue;
  172.                _loc2_ = _loc2_ + 1;
  173.             }
  174.             arrVideos[_loc3_[_loc1_].attributes.id] = vid;
  175.             _loc1_ = _loc1_ + 1;
  176.          }
  177.       }
  178.       i++;
  179.    }
  180. }
  181. function parseUpCaps(str)
  182. {
  183.    var _loc1_ = str;
  184.    var _loc2_ = _loc1_.indexOf("<upcap>");
  185.    if(_loc2_ != -1)
  186.    {
  187.       var _loc3_ = _loc1_.indexOf("</upcap>");
  188.       var word = _loc1_.substring(_loc2_ + 7,_loc3_);
  189.       var beginning = _loc1_.substring(0,_loc2_);
  190.       var end = _loc1_.substring(_loc3_ + 8);
  191.       return beginning + "<TEXTFORMAT LEADING=\'-2\'><font size=\'24\' face=\'FranklinNeoExtBolCon\' color=\'#999999\'>" + word + "</font></TEXTFORMAT> " + end;
  192.    }
  193.    return _loc1_;
  194. }
  195. function navigateTo(pageNumber)
  196. {
  197.    var _loc3_ = this;
  198.    mVideo.shutDownRemotely();
  199.    var id = pageNumber - 1;
  200.    var _loc1_ = 0;
  201.    while(_loc1_ < arrPages.length)
  202.    {
  203.       _loc3_["mPage_" + _loc1_]._visible = false;
  204.       _loc1_ = _loc1_ + 1;
  205.    }
  206.    var _loc2_ = _loc3_["mPage_" + id];
  207.    if(_loc2_.arrImages.length)
  208.    {
  209.       loadImages(_loc2_);
  210.    }
  211.    if(_loc2_.defaultVideoNumber != null)
  212.    {
  213.       playVideo(_loc2_.defaultVideoNumber);
  214.       _loc2_.txtNote_0.htmlText = "";
  215.    }
  216.    if(arrPages[id].type == "12")
  217.    {
  218.       _loc2_.txtQuote._y = _loc2_.txtHeadline._y + _loc2_.txtHeadline.textHeight + 12;
  219.    }
  220.    _loc2_.txtBody_0.textColor = DEFAULT_COLOR;
  221.    _loc2_.txtBody_1.textColor = DEFAULT_COLOR;
  222.    _loc2_.txtHeadline.textColor = SECTION_COLOR;
  223.    _loc2_.txtQuote.textColor = SECTION_COLOR50;
  224.    _loc2_.txtNote_0.textColor = DEFAULT_COLOR;
  225.    _loc2_._visible = true;
  226.    currPage = _loc2_;
  227.    if(arrPages[id].type == "10")
  228.    {
  229.       mPageNav._visible = false;
  230.    }
  231.    else
  232.    {
  233.       mPageNav._visible = true;
  234.    }
  235.    mPageNav.setCurrentPage(pageNumber);
  236. }
  237. function loadImages(mPage)
  238. {
  239.    var _loc2_ = mPage;
  240.    var _loc3_ = Tardis.ASSETS_FOLDER + "images/" + Tardis.ActiveSection.id + "/";
  241.    var _loc1_ = 0;
  242.    while(_loc1_ < _loc2_.arrImages.length)
  243.    {
  244.       _loc2_["mImage_" + _loc1_].loadMovie(_loc3_ + _loc2_.arrImages[_loc1_].image);
  245.       _loc2_["txtCaption_" + _loc1_].htmlText = _loc2_.arrImages[_loc1_].caption;
  246.       _loc2_["txtCaption_" + _loc1_].textColor = DEFAULT_COLOR;
  247.       if(_loc2_.arrImages[_loc1_].hasFullscreen)
  248.       {
  249.          _loc2_.mc_controls._visible = true;
  250.       }
  251.       else
  252.       {
  253.          _loc2_.mc_controls._visible = false;
  254.       }
  255.       _loc2_["txtNote_" + _loc1_].htmlText = _loc2_.arrImages[_loc1_].note;
  256.       _loc2_["txtNote_" + _loc1_].textColor = DEFAULT_COLOR;
  257.       _loc1_ = _loc1_ + 1;
  258.    }
  259. }
  260. function playVideo(videoId)
  261. {
  262.    this.currVideoId = videoId;
  263.    mVideo.shutDownRemotely();
  264.    this.onVideoModuleLoaded = function(mVideo)
  265.    {
  266.       var _loc1_ = mVideo;
  267.       _loc1_.nodeData = arrVideos[currVideoId].nodeData;
  268.       _loc1_.init();
  269.       currPage.txtCaption_0.htmlText = arrVideos[currVideoId].title;
  270.       currPage.txtCaption_0.textColor = Tardis.Colors.getHex("default");
  271.    };
  272.    mVideo.loadMovie(Tardis.ENGINE_FOLDER + "modules/video.swf");
  273. }
  274. function searchandreplace(the_string, search_string, replace_string, occurrences, backward)
  275. {
  276.    var _loc1_ = the_string;
  277.    var _loc3_ = search_string;
  278.    if(_loc3_ == replace_string)
  279.    {
  280.       return _loc1_;
  281.    }
  282.    var found = 0;
  283.    if(backward == true)
  284.    {
  285.       var _loc2_ = _loc1_.lastIndexOf(_loc3_);
  286.       while(_loc2_ >= 0)
  287.       {
  288.          found++;
  289.          var start_string = _loc1_.substr(0,_loc2_);
  290.          var end_string = _loc1_.substr(_loc2_ + _loc3_.length);
  291.          _loc1_ = start_string + replace_string + end_string;
  292.          _loc2_ = _loc1_.lastIndexOf(_loc3_,start_string.length);
  293.          if(found == occurrences)
  294.          {
  295.             _loc2_ = -1;
  296.          }
  297.       }
  298.    }
  299.    else
  300.    {
  301.       _loc2_ = _loc1_.indexOf(_loc3_);
  302.       while(_loc2_ >= 0)
  303.       {
  304.          found++;
  305.          var start_string = _loc1_.substr(0,_loc2_);
  306.          var end_string = _loc1_.substr(_loc2_ + _loc3_.length);
  307.          _loc1_ = start_string + replace_string + end_string;
  308.          _loc2_ = _loc1_.indexOf(_loc3_,_loc2_ + replace_string.length);
  309.          if(found == occurrences)
  310.          {
  311.             _loc2_ = -1;
  312.          }
  313.       }
  314.    }
  315.    return _loc1_;
  316. }
  317. function tagStack(aString)
  318. {
  319.    var error = false;
  320.    var tagArray = [];
  321.    var validTags = ["a","b","i","u","font","p"];
  322.    var tStringArray = aString.split("<");
  323.    var _loc3_ = 1;
  324.    while(_loc3_ < tStringArray.length)
  325.    {
  326.       var _loc1_ = "<" + tStringArray[_loc3_].slice(0,tStringArray[_loc3_].indexOf(">") + 1);
  327.       var shortForm = _loc1_.indexOf(" ") <= -1 ? _loc1_ : _loc1_.slice(0,_loc1_.indexOf(" ")) + ">";
  328.       var tagOnly = shortForm.indexOf("/") <= -1 ? shortForm.slice(1,-1) : shortForm.slice(2,-1);
  329.       isValidTag = false;
  330.       for(var j in validTags)
  331.       {
  332.          if(validTags[j] == tagOnly)
  333.          {
  334.             isValidTag = true;
  335.             break;
  336.          }
  337.       }
  338.       if(isValidTag)
  339.       {
  340.          if(_loc1_.charAt(1) == "/")
  341.          {
  342.             var _loc2_ = tagArray.pop();
  343.             lastTagShort = _loc2_.indexOf(" ") <= -1 ? _loc2_ : _loc2_.slice(0,_loc2_.indexOf(" ")) + ">";
  344.             lastTagShort = lastTagShort.indexOf("/") <= -1 ? lastTagShort.slice(1,-1) : lastTagShort.slice(2,-1);
  345.             if(lastTagShort != tagOnly)
  346.             {
  347.                error = true;
  348.                break;
  349.             }
  350.          }
  351.          else
  352.          {
  353.             tagArray.push(_loc1_);
  354.          }
  355.       }
  356.       _loc3_ = _loc3_ + 1;
  357.    }
  358.    if(!error)
  359.    {
  360.       return tagArray;
  361.    }
  362.    return -1;
  363. }
  364. function fixText(textString)
  365. {
  366.    var _loc3_ = textString;
  367.    var _loc1_ = searchandreplace(_loc3_,String.fromCharCode(13)," <br>");
  368.    _loc1_ = searchandreplace(_loc3_,"\n"," <br>");
  369.    _loc1_ = searchandreplace(_loc3_,"\r"," <br>");
  370.    _loc1_ = searchandreplace(_loc1_,String.fromCharCode(9)," ");
  371.    var _loc2_ = _loc1_.split(" ");
  372.    return _loc2_;
  373. }
  374. function flowText(textString, arrayOfTextFields)
  375. {
  376.    var textArray = fixText(textString);
  377.    var currentWordIndex = 0;
  378.    var currentFieldIndex = 0;
  379.    var maxWordIndex = textArray.length;
  380.    var timeArray = [];
  381.    var leftOverTags = "";
  382.    var i;
  383.    var lastWord = 0;
  384.    for(i in arrayOfTextFields)
  385.    {
  386.       eval(arrayOfTextFields[i]).html = false;
  387.       eval(arrayOfTextFields[i]).text = "";
  388.       eval(arrayOfTextFields[i]).htmlText = "";
  389.    }
  390.    do
  391.    {
  392.       if(currentWordIndex < maxWordIndex)
  393.       {
  394.          var field = eval(arrayOfTextFields[currentFieldIndex]);
  395.          var tempString = "";
  396.          field.html = true;
  397.          if(textArray[currentWordIndex].indexOf("<br>") != -1)
  398.          {
  399.             textArray[currentWordIndex] = searchandreplace(textArray[currentWordIndex],"<br>","");
  400.          }
  401.          i = currentWordIndex;
  402.          while(i < maxWordIndex)
  403.          {
  404.             var newWord = textArray[i];
  405.             newWord = newWord != "<br>" ? newWord + " " : newWord;
  406.             tempString += newWord;
  407.             field.htmlText = "";
  408.             field.htmlText = tempString;
  409.             if(field.maxscroll > 1)
  410.             {
  411.                lastWord = i;
  412.                break;
  413.             }
  414.             i++;
  415.          }
  416.       }
  417.       else
  418.       {
  419.          return true;
  420.       }
  421.       field.htmlText = "";
  422.       var endAt = i;
  423.       field.htmlText = leftOverTags + textArray.slice(currentWordIndex,endAt).join(" ");
  424.       leftOverTags = tagStack(textArray.slice(0,endAt).join(" ")).join("");
  425.       currentWordIndex = endAt;
  426.       currentFieldIndex++;
  427.    }
  428.    while(currentFieldIndex <= arrayOfTextFields.length);
  429.    
  430.    var leftOverText = textArray.slice(lastWord,textArray.length).join(" ");
  431.    return leftOverText;
  432. }
  433. _visible = false;
  434. this.onUnload = function()
  435. {
  436.    mVideo.shutDownRemotely();
  437.    Tardis.overlay.active = false;
  438. };
  439.